package main

import (
	"context"
	"github.com/frankrap/huobi-api/hbdm"
	"log"
	"os"
	"os/signal"
	"sync"
)

func main() {
	conf, err := NewConfig("./config.yaml")
	if err != nil {
		log.Fatal(err)
		return
	}
	proxyUrl := os.Getenv("http_proxy")
	accessKey := conf.Key
	secretKey := conf.Secret
	symbol := conf.Symbol
	baseURL := "https://api.hbdm.com"
	//baseURL := "https://api.btcgateway.pro"
	log.Println("[start]", conf.Symbol, "[HUOBI]交易开始监控")
	apiParams := &hbdm.ApiParameter{
		Debug:              false,
		AccessKey:          accessKey,
		SecretKey:          secretKey,
		EnablePrivateSign:  false,
		BaseURL:            baseURL,
		PrivateKeyPrime256: "",
		ProxyURL:           proxyUrl,
	}
	client := hbdm.NewClient(apiParams)
	robot := NewTrade(client, conf)
	ctx, cancel := context.WithCancel(context.Background())
	// 协程 管理
	wg := &sync.WaitGroup{}
	wg.Add(1)
	go robot.CronATR(wg, ctx, symbol) // 计算 ATR
	wg.Add(1)

	go robot.CronAccount(wg, ctx, symbol) // 账户信息
	robot.CronCalcKline(symbol)           // 计算 k线
	// wg.Add(1)
	// go robot.CronCalcTrading(wg, ctx, symbol) // 计算 交易数据
	// wg.Add(1)
	// go robot.CronCalcDept(wg, ctx, symbol) // 计算 深度
	// wg.Add(1)
	// go robot.CronCalcRatio(wg, ctx, symbol) // 计算 持仓比
	wg.Add(1)
	go robot.CronPosition(wg, ctx, symbol) // 账户持仓
	wg.Add(1)
	go robot.CronOrders(wg, ctx, symbol) // 账户委托列表
	wg.Add(1)
	go robot.CreateOrders(wg, ctx, symbol) // 下单
	robot.Crons.Start()
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt, os.Kill)
	<-c
	log.Println("Ctrl+C 退出")
	robot.Crons.Stop()
	cancel()
	wg.Wait()
}
